#pragma once


#include <assert.h>
#ifndef WFX_ASSERT
#define WFX_ASSERT(expr) assert(expr)
#endif // #ifndef ASSERT


#define ___ANONYMOUS(type,var,line) type var##line
#define __ANONYMOUS(type,line) ___ANONYMOUS(type,_anonymous,line)
#define ANONYMOUS(type) __ANONYMOUS(type,__LINE__)

class _CAnonymous_
{
public:
    template <class T>
    _CAnonymous_(T eval){};
};

#ifndef STATIC_EVAL
#define STATIC_EVAL(eval) \
    ANONYMOUS(static _CAnonymous_)(eval);
#endif // #ifndef STATIC_EVAL






#include <boost/shared_ptr.hpp>

#ifndef MAKE_PTR
#define MAKE_PTR(T) \
    class T;\
    typedef boost::shared_ptr<T> T##Ptr;\
    typedef boost::shared_ptr<const T> T##ConstPtr;\
    typedef boost::shared_ptr<T>& T##PtrRef;\

#endif // #ifndef MAKE_PTR

#include <boost/pointer_cast.hpp>



#ifndef ERROR_CODE
#define ERROR_CODE

#define COMPLETE_SUCCESS 1
#define ERROR_HAPPENED 0

#endif


#include "Log.h"